package com.bsh.service;

import java.util.List;
import java.util.Map;

import com.bsh.dto.UserListQryDto;
import com.bsh.mybatis.dataView.UserInfoExt;
import com.bsh.mybatis.model.User;
import com.bsh.utils.Pager;

public interface UserService {

	/**
	 * 查用户
	 * 
	 * @param userid
	 * @return
	 */
	UserInfoExt getUser(Integer userid);

	/**
	 * 添加用户
	 * 
	 * @param userid
	 * @return
	 */
	Integer addUser(UserInfoExt user);

	/**
	 * 修改用户
	 * 
	 * @param userid
	 * @return
	 */
	Integer editUser(UserInfoExt user);

	/**
	 * 禁用用户
	 * 
	 * @param userid
	 * @return
	 */
	Integer enableUser(int id, boolean isEnabele);

	/**
	 * 批量禁用用户
	 * 
	 * @param userid
	 * @return
	 */
	Integer disableBatch(int[] idList);

	/**
	 * 批量启用用户
	 * 
	 * @param userid
	 * @return
	 */
	Integer enableBatch(int[] idList);

	/**
	 * 删除用户
	 * 
	 * @param userid
	 * @return
	 */
	Integer deleteUser(int id);

	/**
	 * 会员分页
	 * 
	 * @param start
	 * @param end
	 * @return
	 */
	List<Map<String, Object>> getPage(Pager pager, UserListQryDto qryParam);
	/**
	 * 会员分页
	 * 
	 * @param start
	 * @param end
	 * @return
	 */
	List<Map<String, Object>> getPageExport(UserListQryDto qryParam);
	/**
	 * 用户登录
	 */
	User login(String loginName, String password);

	/**
	 * 修改密码
	 */
	boolean changePassword(int id, String password, String newPassword);

	/**
	 * 重置密码
	 */
	boolean resetPassword(String mobile, String password, String smsVerifyCode);

	/**
	 * 注册用户
	 * 
	 * @param userid
	 * @return
	 */
	User registerUser(User user);

	/**
	 * 查用户根据手机号
	 * 
	 * @param userid
	 * @return
	 */
	User getUserByMobile(String mobile);

	/**
	 * 查用户根据用户名
	 * @param name
	 * @return
	 */
	User getUserByName(String name);

	/**
	 * 检查同时用户名和手机号
	 * @param name
	 * @return
	 */
	User checkUserByNameOrMobile(String name);
	
	/**
	 * 保存用户对象
	 * @param user
	 * @return
	 */
	Integer updateByPrimaryKey(User user);
	
	/**
	 * 通过userid推荐的用户列表 
	 * @param pager
	 * @param userid
	 * @return
	 */
	List<Map<String, Object>> getMyRecUserList(Pager pager,Integer userid);
	
	/**
	 * 通过userid推荐的商户列表
	 * @param pager
	 * @param userid
	 * @return
	 */
	List<Map<String, Object>> getMyRecMerchantList(Pager pager,Integer userid);

	/**
	 * ETL导数据时使用
	 * @param id
	 * @param password
	 * @param newPassword
	 * @param type ETL导数据时使用
	 * @return
	 */
	boolean etlChangPassword(int id, String password, String newPassword, String type);
	
	
	/**
	 * 登录ip次数
	 * @param ip
	 * @return
	 */
	int getIpLoginTimes(String ip);
	
	/**
	 * 会员绑定银行卡分页
	 * 
	 * @param start
	 * @param end
	 * @return
	 */
	List<Map<String, Object>> getBankPage(Pager pager, UserListQryDto qryParam);	

}